package JavaSE.CODE.javaCollection;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class CollectionsDemo {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(100);
        list.add(11);
        list.add(21);
        list.add(28);
        //
        System.out.println(list);
        Collections.sort(list);
        System.out.println(list);
        //
        int i = Collections.binarySearch(list,21);
        System.out.println(i);
        //负数表示找不到

        //
        List<Integer> des = new ArrayList<>();
        des.add(0);
        des.add(0);
        des.add(0);
        des.add(0);
        des.add(0);
        Collections.copy(des,list);
        System.out.println(des);
        //copy方法存在的问题：目标数组大小必须大于原数组大小
        //而且会从头开始赋值，覆盖目标数组

        Collections.reverse(list);
        System.out.println(list);

        Collections.shuffle(list);
        System.out.println(list);

        //补充：List转数组
        Integer[] arr= list.toArray(new Integer[0]);
        Integer[] arr1= list.toArray(new Integer[10]);
        //后面必须加个参数，因为需要由参数来知晓类型
        //如果参数数组长度小于list，长度会变成list的长度
        //如果参数数组长度大于list，则结果长度等于参数数组的长度
        System.out.println(Arrays.toString(arr));
        System.out.println(Arrays.toString(arr1));

        //补充：数组转List
        String [] names = {"a","b","c"};
        List<String> list2 = Arrays.asList(names);
        System.out.println(list2);
        //注意：！！由数组转成的List不能删、不能增、动不得，除非拿他再复制一份


//        基本类型的数组转为集合时，应当先转换为包装类
        Integer[] nums = {1,2,4,5,6,223,41,23};
        List<Integer> numlist = Arrays.asList(nums);




    }
}
